package com.lagou.bigdata.task03;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 编程实现客户端
 */
public class ClientObjectTest {

	public static void main(String[] args) {
		Socket s = null;
		ObjectOutputStream oos = null;
		ObjectInputStream ois = null;

		try {
			// 1.创建Socket类型的对象并提供服务器的通信地址和端口号
			s = new Socket(InetAddress.getLocalHost(), 8888);
			System.out.println("连接服务器成功！");

			// 2.使用输入输出流进行通信
			// 将准备好的对象使用对象输出流整体发送出去
			UserMessage tum = new UserMessage("check",
					new User("admin", "123456"));
			oos = new ObjectOutputStream(
					s.getOutputStream());
			oos.writeObject(tum);
			System.out.println("客户端发送对象成功！");
			// 接收服务器发来的处理结果并给出提示，使用对象输入流
			ois = new ObjectInputStream(
					s.getInputStream());
			tum = (UserMessage) ois.readObject();
			if("success".equals(tum.getType())) {
				System.out.println("登录成功，欢迎使用！");
			} else {
				System.out.println("用户名或密码错误！");
			}
		} catch (IOException | ClassNotFoundException e) {
			e.printStackTrace();
		} finally {
			// 3.关闭Socket并释放有关的资源
			if (null != ois) {
				try {
					ois.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (null != oos) {
				try {
					oos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (null != s) {
				try {
					s.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

}
